Computing devices and their operating systems often manage memory at a level of granularity greater than their smallest addressable element—i.e., they divide the device's memory address spaces into fixed-sized blocks, called “pages”. Memory addresses evenly divisible by the page-size are called “page boundaries”. Operating systems often use page-granular management at certain levels while doing finer-grained management at other levels. In some cases, fine-grain allocations don't necessarily begin and/or end on page boundaries. Operating systems often allow system memory to be shared with GPU devices—but such implementations tend to only support such sharing at page granularity, rather than fine-grain allocations including allocations that do not being and/or end on page boundaries.
The same numbers are used throughout the disclosure and the figures to reference like components and features. Numbers in the 100 series refer to features originally found in FIG. 1; numbers in the 200 series refer to features originally found in FIG. 2; and so on.